// Разбор ini-файла
/* в ini-файле должны быть секции:
   [minb] - маска файлов из МИнБа
   [sberk] - маска отчетов о платежах через кассы сбербанка
   [sberus] - маска отчетов о платежах через УС сбербанка
   [sberon] - маска отчетов о платежах через сбербанк-онлайн
*/

#include <iostream>
#include <fstream>
#include <string>
#include <iterator>

int main()
{
  const char *inifilename = "filelist.ini"; // название ini-файла.
  const std::string minbsection = "[MINB]";
  const std::string sberksection = "[SBERK]";
  const std::string sberussection = "[SBERUS]";
  const std::string sberonsection = "[SBERON]";

  /* построчная обработка. если строка соответствует тому, что сверху, то
     указанные ниже маски добавляются в list или vector данного вида отчетов.
  */
  //  std::vector<std::string> mbmask;
  std::ifstream inifile(inifilename); // открытие ini-файла
  if (!inifile.is_open()) {	      // если не открылся (не существует)
    std::ofstream tmpfile(inifilename); // создаем этот файл
    if(!tmpfile.is_open()) {		// если не создается - значит ошибка
      std::cerr << "Cannot create ini-file.\n";
      return 1;
    }
    // Заполнение файла (добаляем заголовки секций и комментарии к ним).
    tmpfile << "[MINB]\n\n[SBERK]\n\n[SBERUS]\n\n[SBERON]\n";
    tmpfile.close();		// закрываем созданный файл
    inifile.open(inifilename);	// открываем для чтения
    if(!inifile.is_open()) {	// если и сейчас не открылся - значит ошибка
      std::cerr << "Cannot open ini-file.\n";
      return 2;
    }
  }

  std::string curstr;
  int i = 0;
  while(!inifile.eof()) {
    std::getline(inifile, curstr);
    curstr.erase(std::remove(curstr.begin(), curstr.end(), ' '), curstr.end());
    if(curstr == minbsection)
      std::cout << "MInB section is found.\n";
  }
    
  inifile.close();		// закрытие ini-файла
  return 0;
}
